From 1e85e0f017d7dcf283255033d526f840d4c325eb Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 3 Feb 2013 16:32:21 -0500 Subject: [PATCH] a11y: Set up popup-for relation between entry and completion This may address https://bugzilla.gnome.org/show_bug.cgi?id=658148 --- gtk/gtkentrycompletion.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/gtk/gtkentrycompletion.c b/gtk/gtkentrycompletion.c index 2f4bd28e7c..e4968dfbda 100644 --- a/gtk/gtkentrycompletion.c +++ b/gtk/gtkentrycompletion.c @@ -2611,6 +2611,35 @@ connect_completion_signals (GtkEntryCompletion *completion) } } +static void +set_accessible_relation (GtkWidget *window, + GtkWidget *entry) +{ + AtkObject *window_accessible; + AtkObject *entry_accessible; + + window_accessible = gtk_widget_get_accessible (window); + entry_accessible = gtk_widget_get_accessible (entry); + + atk_object_add_relationship (window_accessible, + ATK_RELATION_POPUP_FOR, + entry_accessible); +} + +static void +unset_accessible_relation (GtkWidget *window, + GtkWidget *entry) +{ + AtkObject *window_accessible; + AtkObject *entry_accessible; + + window_accessible = gtk_widget_get_accessible (window); + entry_accessible = gtk_widget_get_accessible (entry); + + atk_object_remove_relationship (window_accessible, + ATK_RELATION_POPUP_FOR, + entry_accessible); +} static void disconnect_completion_signals (GtkEntryCompletion *completion) @@ -2660,6 +2689,9 @@ _gtk_entry_completion_disconnect (GtkEntryCompletion *completion) disconnect_completion_signals (completion); + unset_accessible_relation (completion->priv->popup_window, + completion->priv->entry); + completion->priv->entry = NULL; } @@ -2668,5 +2700,9 @@ _gtk_entry_completion_connect (GtkEntryCompletion *completion, GtkEntry *entry) { completion->priv->entry = GTK_WIDGET (entry); + + set_accessible_relation (completion->priv->popup_window, + completion->priv->entry); + connect_completion_signals (completion); } -- 2.30.2